### 4.70 `vfprintf`, `vprintf`, `vsprintf`, `vsnprintf`, `vasprintf`, `vasnprintf`—format argument list

Synopsis

         #include <stdio.h>
         #include <stdarg.h>
         int vprintf(const char *fmt, va_list list);
         int vfprintf(FILE *fp, const char *fmt, va_list list);
         int vsprintf(char *str, const char *fmt, va_list list);
         int vsnprintf(char *str, size_t size, const char *fmt,
             va_list list);
         int vasprintf(char **strp, const char *fmt, va_list list);
         char *vasnprintf(char *str, size_t *size, const char *fmt,
             va_list list);

         int _vprintf_r(struct _reent *reent, const char *fmt,
             va_list list);
         int _vfprintf_r(struct _reent *reent, FILE *fp,
             const char *fmt, va_list list);
         int _vsprintf_r(struct _reent *reent, char *str,
             const char *fmt, va_list list);
         int _vasprintf_r(struct _reent *reent, char **str,
             const char *fmt, va_list list);
         int _vsnprintf_r(struct _reent *reent, char *str,
             size_t size, const char *fmt, va_list list);
         char *_vasnprintf_r(struct _reent *reent, char *str,
             size_t *size, const char *fmt, va_list list);

Description
`vprintf`, `vfprintf`, `vasprintf`, `vsprintf`, `vsnprintf`, and `vasnprintf` are (respectively) variants of `printf`, `fprintf`, `asprintf`, `sprintf`, `snprintf`, and `asnprintf`. They differ only in allowing their caller to pass the variable argument list as a `va_list` object (initialized by `va_start`) rather than directly accepting a variable number of arguments. The caller is responsible for calling `va_end`.

`_vprintf_r`, `_vfprintf_r`, `_vasprintf_r`, `_vsprintf_r`, `_vsnprintf_r`, and `_vasnprintf_r` are reentrant versions of the above.

Returns
The return values are consistent with the corresponding functions.

Portability
ANSI C requires `vprintf`, `vfprintf`, `vsprintf`, and `vsnprintf`. The remaining functions are newlib extensions.

Supporting OS subroutines required: `close`, `fstat`, `isatty`, `lseek`, `read`, `sbrk`, `write`.